AIGC初体验:iPhone时刻,还是至暗时刻

您所在的位置:网站首页 google aigc AIGC初体验:iPhone时刻,还是至暗时刻

AIGC初体验:iPhone时刻,还是至暗时刻

#AIGC初体验:iPhone时刻,还是至暗时刻| 来源: 网络整理| 查看: 265

2022年,当AI开始绘画的时候,很多设计师们觉得没什么。当AI开始生成代码的时候,很多程序员也觉得没什么。当ChatGPT出现的时候,才将AIGC这一领域彻底引爆。被称为AI届的『iPhone时刻』。

ChatGPT对搜索引擎领域冲击巨大,百度仓皇应战,在今年二月高调官宣3月16号召开文心一言发布会。Robin信心满满地说:『十月怀胎,一朝分娩』。甚至扬言『ChatGPT不具备文生图的能力,站在另外一个桌子去比较的话,ChatGPT是落后百度的啊。』

看似百度早有储备,但文心一言(一格)最终衍变成你画我猜,是Robin所想不到的。

话分两头,在文心一言发布会前一天(3月15号),GPT-4横空出世。发布会的后一天(3月17号)微软宣布office全线产品全面接入GPT-4。而在3月16号当天,知名AI绘画产品Midjourney官宣了第5版发布的消息,不存在的中国情侣、特朗普被捕等AI画作以假乱真,震动业界。当然震动的不只是互联网领域、人工智能领域,也包含设计行业,以及模特行业。程序员们在感慨设计行业岌岌可危的时候,殊不知自己也在暗中进入了倒计时。

在OpenAPI发布GPT-4的同一天,同时宣布了旗下编程IDE:Cursor(官网:http://cursor.so)已经接入GPT-4。

咱也不知道3月16号前后是什么黄道吉日,还是微软、Midjourney你们和百度有仇,这么多AI产品震撼发布。

好了,废话不多说,言归正传。笔者初期也是以玩票的心态体验了这些产品,最终结果则是大为震撼。

ChatGPT我注册了账号,鉴于网上ChatGPT的经验对话已经太多,这里我就不放了。

我体验了一下最新的Midjourney V5。AI绘画与AI对话、生成代码不同,它们需要专业的prompt,我自然不专业,像模像样的看了几个后写了一些。因为我的公众号叫做『编程往事』,所以我写了一个 programming in the past 相关的prompt:

Chinese man, programming in the past, now only recall memories --v 5

--v 表示指定版本。这里用v5。生成结果确实相当震撼,足以乱真,下面有选项,不满意还可以继续调整。

再来一个,我随意写了一些词语:

daemon, chain, blue flame, fight, street, full boy,--v 5 --ar 9:16

--ar 表示指定生成的画面比例。比如上面这个就是9:16,当然它不是能支持任意比例的。对于不支持的比例会报错。这个生成的是2D插画风格的,看起来还不错。其实我只想要蓝色火焰(blue flame),上面大多是蓝黄火焰都有的,第四幅图更是没有蓝色火焰。不过这都没关系,毕竟我不会专业的prompt,我只是随意写的。而且Midjourney也并不完美。

再试一下卡通:

beauty with blond hair fly in the sky, by Toriyama Akira, side view --v 5 --ar 16:9

by指令用于指定图像的风格。Toriyama Akira就是鸟山明。不过生成风格来看其实不像是鸟山明,但确实已经是日本漫画的风格了。它对于欧美画家的风格会识别的更好一点。

看到小红书上有很多人在分享AI绘画,我也想把我生成的图片分享出去。虽然每次生成四张图点击U1 ~ U4四个选项,可以拿到4个加了细节的单图,但是我觉得太慢了。我就想把第一次生成的这4张图分享出去就行,于是我用手机相册编辑切割了半天。

心想着周末写个python脚本吧,一键切割。虽然我之前没写过python处理图像的代码,不过我知道python丰富的第三方库肯定能满足我,我只要google、百度一下,然后整理改改,再调试调试,花个把小时应该就能写出来。

咦,我为什么不让AI帮我做呀。于是我下载了Cursor。相比之前引起轰动的代码生成工具Copilot,Cursor不仅使用简单,而且免费。当然它也支持关联Copilot账号,关联之后生成的代码质量会更高,不过裸板也基本够用了。

我想实现的功能就是将一个图片从中间切割成4等份,并且新图片的名字前缀和原始图片名称一致。另外我发现Midjourney生成的四合一大图有时是webp格式,有时是png格式。我需要把webp格式转成jpg或者png。这是我是诉求,于是我打开Cursor 使用comman + K打开面板,输入:

python, 如果一个图片是webp格式则转成jpg格式。从中间切割成4个图片文件,每个图片名称的前缀和原图片相同。包含main函数,从命令行参数中获取原始图片的路径

既然师出名门OpenAI,这个用起来自然不需要专业的prompt,只需要用自然语言对话就行了,也支持中文。

很快,我得到一段脚本:

import os import sys from PIL import Image def main(): if len(sys.argv) < 2: print("Usage: python image_process.py [image_path]") return image_path = sys.argv[1] if not os.path.exists(image_path): print("Image path not exists!") return if image_path.endswith('.webp'): image = Image.open(image_path).convert('RGB') image.save(image_path[:-5] + '.jpg') image_path = image_path[:-5] + '.jpg' with Image.open(image_path) as img: width, height = img.size x_center, y_center = width // 2, height // 2 left, top, right, bottom = x_center // 2, y_center // 2, x_center + x_center // 2, y_center + y_center // 2 img.crop((0, 0, x_center, y_center)).save(f"{image_path[:-4]}_1.jpg") img.crop((x_center, 0, width, y_center)).save(f"{image_path[:-4]}_2.jpg") img.crop((0, y_center, x_center, height)).save(f"{image_path[:-4]}_3.jpg") img.crop((x_center, y_center, width, height)).save(f"{image_path[:-4]}_4.jpg") if __name__ == '__main__': main()

保存执行,然后对上面几个图片分别执行。

确实可用。改都用不改了。预计周末花个把小时做的事情,就这么没了。可以省出时间写这篇知乎文章了…

除了这些玩具性质的脚本,Cursor也可以用在工作中。作为程序员,如果你没有ChatGPT账号,没关系。Cursor也带有聊天模式。比如我在开发一个组件的过程中,忘记了一个protobuf的用法,平时我就会去一通搜索。现在在Cursor中command + L开启对话模式:

protobuf中MessageOptions和FieldOptions中的序号可以相同吗

完美回答了我的问题。

接着我用command + K让它帮我生成一个demo代码:

C++ protobuf中通过反射获取一个enum类型的数字值和字符串名

// Assume we have a protobuf message called "my_message" const google::protobuf::Descriptor* descriptor = my_message.GetDescriptor(); const google::protobuf::Reflection* reflection = my_message.GetReflection(); // Get the field descriptor for the enum field const google::protobuf::FieldDescriptor* field = descriptor->FindFieldByName("my_enum_field"); // Get the enum value using reflection if (field->type() == google::protobuf::FieldDescriptor::TYPE_ENUM) { const google::protobuf::EnumValueDescriptor* enum_value_descriptor = reflection->GetEnum(my_message, field); int enum_value = enum_value_descriptor->number(); std::string enum_name = enum_value_descriptor->name(); std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3